//老人的数目
/*给你一个下标从 0 开始的字符串 details 。details 中每个元素都是一位乘客的信息，信息用长度为 15 的字符串表示，表示方式如下：
前十个字符是乘客的手机号码。
接下来的一个字符是乘客的性别。
接下来两个字符是乘客的年龄。
最后两个字符是乘客的座位号。
请你返回乘客中年龄 严格大于 60 岁 的人数。
1 <= details.length <= 100
details[i].length == 15
details[i] 中的数字只包含 '0' 到 '9' 。
details[i][10] 是 'M' ，'F' 或者 'O' 之一。
所有乘客的手机号码和座位号互不相同。
*/
int countSeniors(char** details, int detailsSize) {
    int old_count = 0;
    for (int i = 0; i < detailsSize; i++) {
        if ((details[i][11] - '0') * 10 + (details[i][12] - '0') > 60)
            old_count++;
    }
    return old_count;
}




//独特的电子邮件地址
/*每个 有效电子邮件地址 都由一个 本地名 和一个 域名 组成，以 '@' 符号分隔。除小写字母之外，电子邮件地址还可以含有一个或多个 '.' 或 '+' 。

例如，在 alice@leetcode.com中， alice 是 本地名 ，而 leetcode.com 是 域名 。
如果在电子邮件地址的 本地名 部分中的某些字符之间添加句点（'.'），则发往那里的邮件将会转发到本地名中没有点的同一地址。请注意，此规则 不适用于域名 。

例如，"alice.z@leetcode.com” 和 “alicez@leetcode.com” 会转发到同一电子邮件地址。
如果在 本地名 中添加加号（'+'），则会忽略第一个加号后面的所有内容。这允许过滤某些电子邮件。同样，此规则 不适用于域名 。

例如 m.y+name@email.com 将转发到 my@email.com。
可以同时使用这两个规则。

给你一个字符串数组 emails，我们会向每个 emails[i] 发送一封电子邮件。返回实际收到邮件的不同地址数目。
1 <= emails.length <= 100
1 <= emails[i].length <= 100
emails[i] 由小写英文字母、'+'、'.' 和 '@' 组成
每个 emails[i] 都包含有且仅有一个 '@' 字符
所有本地名和域名都不为空
本地名不会以 '+' 字符作为开头
域名以 ".com" 后缀结尾。
域名在 ".com" 后缀前至少包含一个字符
*/
void email_copy(const char* email1, char* email2) {
    while (*email1 != '@') {
        while (*email1 == '.')
            email1++;
        if (*email1 == '+') {
            while (*email1 != '@')
                email1++;
        }
        if (*email1 == '@')
            break;
        *email2 = *email1;
        email1++;
        email2++;
    }
    while (*email1) {
        *email2 = *email1;
        email1++;
        email2++;
    }
}
bool email_compare(char* email1, char* email2) {
    while (*email1 != '@') {
        while (*email1 == '.')
            email1++;
        if (*email1 == '+') {
            while (*email1 != '@')
                email1++;
            break;
        }
        if (*email1 == '@')
            break;
        if (*email2 != *email1)
            return false;
        email1++;
        email2++;
    }
    while (*email1) {
        if (*email2 != *email1)
            return false;
        email1++;
        email2++;
    }
    if (*email1 == *email2)
        return true;
    return false;
}
bool emails_compare(char* email, char** arr, int j) {
    for (int i = 0; i < j; i++) {
        if (email_compare(email, arr[i]))
            return false;
    }
    return true;
}
int numUniqueEmails(char** emails, int emailsSize) {
    int difer_count = 0;
    char** arr = (char**)calloc(emailsSize, sizeof(char*));
    for (int i = 0; i < emailsSize; i++) {
        arr[i] = (char*)calloc(100, sizeof(char));
    }
    int j = 0;
    for (int i = 0; i < emailsSize; i++) {
        if (j == 0) {
            email_copy(emails[i], arr[j]);
            j++;
        } else {
            if (emails_compare(emails[i], arr, j)) {
                email_copy(emails[i], arr[j]);
                j++;
            }
        }
    }
    difer_count = j;
    return difer_count;
}